package shopping.service.impl;

import shopping.bean.Goods;
import shopping.bean.Page;
import shopping.dao.GoodsDao;
import shopping.dao.impl.GoodsDaoImp;
import shopping.service.GoodsService;

import java.util.List;

public class GoodsServiceImpl implements GoodsService {
    private GoodsDao goodsDao = new GoodsDaoImp();

    @Override
    public Goods queryGoodsById(Integer id) {

        return goodsDao.queryGoodsById(id);
    }

    @Override
    public List<Goods> queryGoodss() {
        return goodsDao.queryGoodss();
    }

    @Override
    public Page<Goods> page(int pageNo, int pageSize) {
        Page<Goods> page = new Page<>();
        //求总记录数
        Integer pageTotalCount = goodsDao.queryForPageTotalCount();
        //设置总记录数
        page.setPageTotalCount(pageTotalCount);
        //求总页码数
        Integer pageTotal = pageTotalCount / pageSize;
        if(pageTotalCount % pageSize != 0){
            pageTotal += 1;
        }
        //设置总页码数
        page.setPageTotal(pageTotal);
        //设置当前页码
        page.setPageNo(pageNo);
        //设置每页显示数据
        page.setPageSize(pageSize);

        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        //求当前页数据
        List<Goods> items = goodsDao.queryForPageItems(begin,pageSize);
        page.setItems(items);
        return page;
    }

    @Override
    public Page<Goods> pageByPrice(int pageNo, int pageSize, int min, int max) {
        Page<Goods> page = new Page<>();
        //求总记录数
        Integer pageTotalCount = goodsDao.queryForPageTotalCountByPrice(min,max);
        //设置总记录数
        page.setPageTotalCount(pageTotalCount);
        //求总页码数
        Integer pageTotal = pageTotalCount / pageSize;
        if(pageTotalCount % pageSize != 0){
            pageTotal += 1;
        }
        //设置总页码数
        page.setPageTotal(pageTotal);
        //设置当前页码
        page.setPageNo(pageNo);
        //设置每页显示数据
        page.setPageSize(pageSize);

        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        //求当前页数据
        List<Goods> items = goodsDao.queryForPageItemsByPrice(begin,pageSize,min,max);
        page.setItems(items);
        return page;
    }
}
